package servlets;

import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import excepcion.DAOExcepcion;
import negocio.GestionPersona;
import modelo.Categoria;
import modelo.Persona;
import modelo.Usuario;

/**
 * Servlet implementation class RegistrarPersona
 */
@WebServlet("/RegistrarPersona")
public class RegistrarPersona extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrarPersona() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setAttribute("MENSAJE", "ERROR: Pagina No Encontrada");
		RequestDispatcher rd = request.getRequestDispatcher("/error.jsp");
		rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		/*			
		private int idPersona;
	    private String nombres;   contact_firstname
	    private String paterno;  contact_familyname1
	    private String materno;  contact_familyname2
	    private String sexo;  cboSexo
	    private String correo;  txtemail
	    private String tipodoc; tipodoc
	    private int numerodoc; nroidentidad
	    private int celular; txtphone
	    private String fechanacimiento; fechanac
	*/
		
		Boolean xGrabar=true;
		String mensaje= null;
		String mensajeNoGrabo="Error con el valor ingresado en o campo falta llenar ";
	
		String name = request.getParameter("contact_firstname");
		String ape=request.getParameter("contact_familyname1");
		String mat=request.getParameter("contact_familyname2");
		String email=request.getParameter("txtemail");
		String doctip=request.getParameter("tipodoc");
		Integer nrotipodni=Integer.parseInt(request.getParameter("nroidentidad"));
		String celular=request.getParameter("txtphone");
		String fechanacimiento=request.getParameter("fechanac");
	
	
		if (name.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Nombre"; xGrabar=false;}
		if (ape.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Paterno"; xGrabar=false;}
		if (mat.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Materno"; xGrabar=false;}
		if (email.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Email"; xGrabar=false;}
		if (nrotipodni <=0){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "nro de Documento"; xGrabar=false;}
		if (celular.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Celular"; xGrabar=false;}
		if (fechanacimiento.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Fecha Nacimiento"; xGrabar=false;}
		
			Persona persona= new Persona();
			if (xGrabar){
				persona.setNombres(request.getParameter("contact_firstname"));
				System.out.println("El contact_firstname es --> " + request.getParameter("contact_firstname"));
				persona.setPaterno(request.getParameter("contact_familyname1"));
				System.out.println("El contact_familyname1 es --> " + request.getParameter("contact_familyname1"));
				persona.setMaterno(request.getParameter("contact_familyname2"));
				System.out.println("El contact_familyname2 es --> " + request.getParameter("contact_familyname2"));
				persona.setSexo(request.getParameter("cboSexo"));
				System.out.println("El Sexo de la persona es --> " + request.getParameter("cboSexo"));
				persona.setCorreo(request.getParameter("txtemail"));
				System.out.println("El correo electronico  es --> " + request.getParameter("txtemail"));
				persona.setTipodoc(request.getParameter("tipodoc"));
				System.out.println("El tipo de documento  es --> " + request.getParameter("tipodoc"));
				persona.setNumerodoc(Integer.parseInt(request.getParameter("nroidentidad")));
				System.out.println("El Nro Identidad es --> " + request.getParameter("nroidentidad"));
				persona.setCelular(Integer.parseInt(request.getParameter("txtphone")));
				System.out.println("El Nro de celular es --> " + request.getParameter("txtphone"));		
				persona.setFechanacimiento(request.getParameter("fechanac"));
				System.out.println("La fecha de nacimiento  es --> " + request.getParameter("fechanac"));
			
				//Categoria categoria = new Categoria();
			//	categoria.setIdcategoria(1);
				//persona.setCategoria(categoria);
				Usuario usuario = new Usuario();
				usuario.setUser("apizarro");
			//	persona.setUsuario(usuario);
			}
			GestionPersona negCan = new GestionPersona();
		/*	String name=request.getParameter("contact_firstname");
			String ape=request.getParameter("contact_familyname1");
			String mat=request.getParameter("contact_familyname1");
			Integer sexotip=Integer.parseInt(request.getParameter("cboSexo"));
			String sex;
			if(sexotip==1){
				sex = "Masculino";
			}else if(sexotip==2){
				sex = "Femenino";
			String emal=request.getParameter("txtemail");
			Integer doctip=Integer.parseInt(request.getParameter("tipodoc"));
			Integer nrotipodni=Integer.parseInt(request.getParameter("nroidentidad"));
			String TipoDNI;
			if(nrotipodni==1){
				TipoDNI = "DNI";
			}else if(nrotipodni==2){
				TipoDNI = "Pasaporte";
			}else{
				TipoDNI = "Carnet de Extranjeria";
			}
			String nrodoc=request.getParameter("txtTipDni");
		
			String celular=request.getParameter("txtphone");
			String fechanacimiento=request.getParameter("fechanac");
			
			//Date j = Date.valueOf(request.getParameter("txtFecNacimiento"));
			//Integer k=Integer.parseInt(request.getParameter("txtNumCelular"));
			
			
			*/	
			try {
				if (xGrabar){
					mensaje = negCan.insertar(persona);
					System.out.println("Mensaje : " + mensaje);
					request.setAttribute("MENSAJE", "Datos grabados correctamente");
					
					RequestDispatcher rd = request.getRequestDispatcher("/prototipopersonas.jsp");
				rd.forward(request, response);
				}
				
				 
				
			} catch (DAOExcepcion e1) {
				// TODO Auto-generated catch block
				System.err.print(e1);
				if (((String)e1.getMessage()).equals("Duplicate entry 'cucho' for key 'correo_UNIQUE'")){
					System.out.println("El correo existe");
					request.setAttribute("MENSAJE", "El correo existe en la tabla persona");
				}
				else if (((String)e1.getMessage()).equals("Duplicate entry 'dedo' for key 'correo_UNIQUE'")){
					System.out.println("El correo existe");
					request.setAttribute("MENSAJE", "El correo existe en la tabla persona");
				}
				
				else if (((String)e1.getMessage()).equals("Duplicate entry '12122' for key 'numerodoc_UNIQUE'")){
					System.out.println("El numero de documento  de persona ya existe");
					request.setAttribute("MENSAJE", "El numero de documento  de la persona ya existe en la tabla");
				}
				else if (((String)e1.getMessage()).equals("Duplicate entry '42217908' for key 'numerodoc_UNIQUE'")){
					System.out.println("El numero de documento  de persona ya existe");
					request.setAttribute("MENSAJE", "El numero de documento  de la persona ya existe en la tabla");
				}
				//request.setAttribute("MENSAJE", );
				
			RequestDispatcher rd = request.getRequestDispatcher("/prototipopersonas.jsp");
				rd.forward(request, response);
			}finally{
				
				if (!xGrabar){
					request.setAttribute("MENSAJE", mensajeNoGrabo);
					
					RequestDispatcher rd = request.getRequestDispatcher("/prototipopersonas.jsp");
					rd.forward(request, response);
				}
			}
		
		
			
		
	}

}
